package com.gqh.weather.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gqh.weather.domain.dto.QuestionListData;
import com.gqh.weather.domain.entity.Question;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 题目详情管理数据访问接口
 * @author AI
 * @date 2025-09-21
 */
@Mapper
public interface QuestionMapper extends BaseMapper<Question> {
    
    /**
     * 分页查询题目列表（关联查询创建人姓名）
     * 实现在 QuestionMapper.xml 中
     *
     * @param page 分页对象
     * @param createdBy 创建人ID
     * @param type 科目类型（0表示全部）
     * @param qtype 题目类型（0表示全部）
     * @param ifPublish 发布状态（0全部 1已发布 2未发布）
     * @param keyword 关键字搜索
     * @return 题目列表分页数据
     */
    Page<QuestionListData> selectQuestionListWithCreator(
            Page<QuestionListData> page,
            @Param("createdBy") Integer createdBy,
            @Param("type") Integer type,
            @Param("qtype") Integer qtype,
            @Param("ifPublish") Integer ifPublish,
            @Param("keyword") String keyword
    );
    
    /**
     * 随机查询指定数量的题目ID
     *
     * @param size 随机数量
     * @param createdBy 创建人ID
     * @param type 科目类型（0表示全部）
     * @param qtype 题目类型（0表示全部）
     * @param ifPublish 发布状态（0全部 1已发布 2未发布）
     * @param difficulty 难度（null表示全部）
     * @return 题目ID列表
     */
    List<Integer> selectRandomQuestionIds(
            @Param("size") Integer size,
            @Param("createdBy") Integer createdBy,
            @Param("type") Integer type,
            @Param("qtype") Integer qtype,
            @Param("ifPublish") Integer ifPublish,
            @Param("difficulty") Integer difficulty
    );
    
}